﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace _43文件操作io流作业
{
    internal class Program
    {
        //文件流复制文件
        private static void Main1(string[] args)
        {
            //指定路径
            string readpath = @"C:\Users\CZF\Desktop\test目录\新建文本文档.txt";
            string writepath = @"C:\Users\CZF\Desktop\b.txt";
            //创建一个读文件流
            FileStream fsread = new FileStream(readpath, FileMode.Open, FileAccess.Read);
            //创建一个写文件流
            FileStream fswrite = new FileStream(writepath, FileMode.Create, FileAccess.Write);
            //定义1kb缓冲区
            byte[] array = new byte[1024];//1kb的缓冲区
            while (true)
            {
                //读
                int length = fsread.Read(array, 0, array.Length); //length是真实读取到的字节数
                if (length == 0)
                {
                    break;
                }
                //将上面读取到的字节块写入新文件流
                fswrite.Write(array, 0, length);
                Console.WriteLine("文件共{0}字节,本次读取{1}字节,当前位置{2}", fsread.Length, length, fsread.Position);
                Console.ReadLine();
            }
            fswrite.Flush();//写入流在写入完成后需要调用Flush(),把底层缓冲区的数据全部写入文件
            Console.WriteLine("复制完成");
            fsread.Close();//流使用完,必须关闭,否则会一致占用电脑的资源(文件流则占用文件)
            fswrite.Close();
        }

        //递归输出D盘所有文件的文件路径,生成一个文件ExeFiles.txt清单
        private static void Main2(string[] args)
        {
            string path = @"D:\";
            FileD(path);//D盘文件
        }

        //输出D盘所有文件
        private static void FileD(string path)
        {
            try
            {   //写入exe文件的路径
                string pathwrite = @"C:\Users\CZF\Desktop\test目录\ExeFiles.txt";
                string[] str = Directory.GetFiles(path);  //获取当前文件夹所有文件
                string[] str2 = Directory.GetFiles(path, "*.exe");//存放exe文件的数组
                for (int i = 0; i < str.Length; i++)
                {
                    Console.WriteLine(str[i]);
                }
                string[] str1 = Directory.GetDirectories(path);   //获取当前文件夹下所有子目录
                for (int i = 0; i < str1.Length; i++)//将子目录下的文件显示
                {
                    FileD(str1[i]);
                }
                //输出exe文件到TXT文档
                for (int i = 0; i < str2.Length; i++)
                {
                    File.AppendAllText(pathwrite, str2[i] + "\n"); //追加所有文本
                }
            }
            catch (Exception)
            {
                Console.WriteLine("访问拒绝");
            }
        }

        //Ini文件读取类IniFile
        private static void Main(string[] args)
        {
            //创建inifile对象
            Inifile ini = new Inifile();
            //读取文件
            ini.ReadFile();
            string ip = ini.GetString("连接信息", "主机");
            Console.WriteLine(ip);
        }
    }
}